home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / thermal.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.9 KB  |  121 lines

  1. /*
  2.  *  thermal.h  ($Revision: 0 $)
  3.  *
  4.  *  Copyright (C) 2008  Intel Corp
  5.  *  Copyright (C) 2008  Zhang Rui <rui.zhang@intel.com>
  6.  *  Copyright (C) 2008  Sujith Thomas <sujith.thomas@intel.com>
  7.  *
  8.  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  9.  *  This program is free software; you can redistribute it and/or modify
  10.  *  it under the terms of the GNU General Public License as published by
  11.  *  the Free Software Foundation; version 2 of the License.
  12.  *
  13.  *  This program is distributed in the hope that it will be useful, but
  14.  *  WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.  *  General Public License for more details.
  17.  *
  18.  *  You should have received a copy of the GNU General Public License along
  19.  *  with this program; if not, write to the Free Software Foundation, Inc.,
  20.  *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  21.  *
  22.  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  23.  */
  24.  
  25. #ifndef __THERMAL_H__
  26. #define __THERMAL_H__
  27.  
  28. #include <linux/idr.h>
  29. #include <linux/device.h>
  30.  
  31. struct thermal_zone_device;
  32. struct thermal_cooling_device;
  33.  
  34. struct thermal_zone_device_ops {
  35.     int (*bind) (struct thermal_zone_device *,
  36.              struct thermal_cooling_device *);
  37.     int (*unbind) (struct thermal_zone_device *,
  38.                struct thermal_cooling_device *);
  39.     int (*get_temp) (struct thermal_zone_device *, char *);
  40.     int (*get_mode) (struct thermal_zone_device *, char *);
  41.     int (*set_mode) (struct thermal_zone_device *, const char *);
  42.     int (*get_trip_type) (struct thermal_zone_device *, int, char *);
  43.     int (*get_trip_temp) (struct thermal_zone_device *, int, char *);
  44.     int (*get_crit_temp) (struct thermal_zone_device *, unsigned long *);
  45. };
  46.  
  47. struct thermal_cooling_device_ops {
  48.     int (*get_max_state) (struct thermal_cooling_device *, char *);
  49.     int (*get_cur_state) (struct thermal_cooling_device *, char *);
  50.     int (*set_cur_state) (struct thermal_cooling_device *, unsigned int);
  51. };
  52.  
  53. #define THERMAL_TRIPS_NONE -1
  54. #define THERMAL_MAX_TRIPS 12
  55. #define THERMAL_NAME_LENGTH 20
  56. struct thermal_cooling_device {
  57.     int id;
  58.     char type[THERMAL_NAME_LENGTH];
  59.     struct device device;
  60.     void *devdata;
  61.     struct thermal_cooling_device_ops *ops;
  62.     struct list_head node;
  63. };
  64.  
  65. #define KELVIN_TO_CELSIUS(t)    (long)(((long)t-2732 >= 0) ?    \
  66.                 ((long)t-2732+5)/10 : ((long)t-2732-5)/10)
  67. #define CELSIUS_TO_KELVIN(t)    ((t)*10+2732)
  68.  
  69. #if defined(CONFIG_THERMAL_HWMON)
  70. /* thermal zone devices with the same type share one hwmon device */
  71. struct thermal_hwmon_device {
  72.     char type[THERMAL_NAME_LENGTH];
  73.     struct device *device;
  74.     int count;
  75.     struct list_head tz_list;
  76.     struct list_head node;
  77. };
  78.  
  79. struct thermal_hwmon_attr {
  80.     struct device_attribute attr;
  81.     char name[16];
  82. };
  83. #endif
  84.  
  85. struct thermal_zone_device {
  86.     int id;
  87.     char type[THERMAL_NAME_LENGTH];
  88.     struct device device;
  89.     void *devdata;
  90.     int trips;
  91.     struct thermal_zone_device_ops *ops;
  92.     struct list_head cooling_devices;
  93.     struct idr idr;
  94.     struct mutex lock;    /* protect cooling devices list */
  95.     struct list_head node;
  96. #if defined(CONFIG_THERMAL_HWMON)
  97.     struct list_head hwmon_node;
  98.     struct thermal_hwmon_device *hwmon;
  99.     struct thermal_hwmon_attr temp_input;    /* hwmon sys attr */
  100.     struct thermal_hwmon_attr temp_crit;    /* hwmon sys attr */
  101. #endif
  102. };
  103.  
  104. struct thermal_zone_device *thermal_zone_device_register(char *, int, void *,
  105.                              struct
  106.                              thermal_zone_device_ops
  107.                              *);
  108. void thermal_zone_device_unregister(struct thermal_zone_device *);
  109.  
  110. int thermal_zone_bind_cooling_device(struct thermal_zone_device *, int,
  111.                      struct thermal_cooling_device *);
  112. int thermal_zone_unbind_cooling_device(struct thermal_zone_device *, int,
  113.                        struct thermal_cooling_device *);
  114. struct thermal_cooling_device *thermal_cooling_device_register(char *, void *,
  115.                                    struct
  116.                                    thermal_cooling_device_ops
  117.                                    *);
  118. void thermal_cooling_device_unregister(struct thermal_cooling_device *);
  119.  
  120. #endif /* __THERMAL_H__ */
  121.